﻿using System.Data;
using System.Windows.Forms;

namespace EA_therapy
{
    public class EADB : UseAccessDb
    {
        /*
        方法：查询所有患者信息
        形参：无
        返回值：数据库数据
        */
        static public DataTable GetPatiet()
        {
            string sql = "select 时间,姓名,身份证号,性别,年龄,职业,身高,体重,联系电话,家庭地址 from 患者信息";
            return GetNote(sql);
        }

        /*
        方法：通过患者名字查询患者信息
        形参：姓名
        返回值：数据库数据
        */
        static public DataTable GetPatientbyName(string name)
        {
            string sql = "select 时间,姓名,身份证号,性别,年龄,职业,身高,体重,联系电话,家庭地址 from 患者信息 where 姓名='" + name + "'";
            return GetNote(sql);
        }

        /*
        方法：通过患者身份证号查询患者信息
        形参：身份证号
        返回值：数据库数据
        */
        static public DataTable GetPatientbyID(string ID)
        {
            string sql = "select 时间,姓名,身份证号,性别,年龄,职业,身高,体重,联系电话,家庭地址 from 患者信息 where 身份证号='" + ID + "'";
            return GetNote(sql);
        }

        /*
        方法：查询是否存在患者信息
        形参：患者身份证号
        返回值：bool
        */
        static public bool isPatientExist(string ID)
        {
            if (GetPatientbyID(ID).Rows.Count > 0)
                return true;
            return false;
        }

        /*
        方法：查询治疗信息
        形参：患者身份证号
        返回值：数据库数据
        */
        static public DataTable GetCute(string ID)
        {
            string sql = "select z.病名,z.证型,z.病情记录,"+
                "z.穴位组一,z.穴位组二,z.穴位组三,z.穴位组四,"+
                "c.治疗时间,c.频率1,c.频率2,c.治疗结束时间,c.治疗日期,"+
                "c.通道1波形,c.通道1最大值,c.通道1最小值,"+
                "c.通道2波形,c.通道2最大值,c.通道2最小值,"+
                "c.通道3波形,c.通道3最大值,c.通道3最小值,"+
                "c.通道4波形,c.通道4最大值,c.通道4最小值,"+
                "z.治疗前电阻,z.治疗后电阻 from 治疗单信息 z,处方单信息 c where z.治疗单号 = c.治疗单号 and z.身份证号='" + ID + "'";
            return GetNote(sql);
        }

        /*
        方法：查询该患者是否存在治疗档案
        形参：患者身份证号
        返回值：bool
        */
        static public bool isCuteExist(string ID)
        {
            if (GetCute(ID).Rows.Count > 0)
                return true;
            return false;
        }

        /*
        方法：更新患者信息
        形参：SQL语句
        返回值：bool
        */
        static public void UpdatePatient(string info)
        {
            string sql = "UPDATE 患者信息 SET " + info + " where 身份证号='" + Global.ID + "'";
            if (UseAccessDb.UpdateNote(sql))
                MessageBox.Show("更新成功！");
            else
                MessageBox.Show("更新失败！");
        }

        /*
        方法：更新患者信息
        形参：SQL语句
        返回值：bool
        */
        static public bool DeletePatient(string value)
        {
            string sql = "select * from 患者信息";
            if (DelNote(sql, "患者信息", "身份证号", value))
                return true;
            else
                return false;
        }

        /*
        方法：更新治疗单信息
        形参：SQL语句
        返回值：bool
        */
        static public void UpdateDZ(string info)
        {
            string sql = "UPDATE 治疗单信息 SET " + info + " where 身份证号='" + Global.ID + "' and 治疗单号='" + Global.disID + "'";
            UseAccessDb.UpdateNote(sql);
        }

        /*
        方法：删除病名
        形参：string类型值-病名
        返回值：无
        */
        static public void DelBM(string value)
        {
            string sql = "select * from 病名 where name='" + value + "'";
            DelNote(sql,"病名","name", value);       
        }

        static public DataTable GetBM()
        {
            string sql = "select name from 病名";
            return GetNote(sql);
        }
        static public void isBMExist(string ID)
        {
            string sql = "select name from 病名 where name='" + ID + "'";
            if (GetNote(sql).Rows.Count > 0)
                return;
            else
            {
                string sql2 = "insert into 病名(name) values('" + ID + "')";
                if (!AddNote(sql2))
                    MessageBox.Show("添加失败!");
            }
        }
        /*
        方法：删除证型
        形参：string类型值-证型
        返回值：无
        */
        static public void DelZX(string value)
        {
            string sql = "select * from 证型 where name='" + value + "'";
            DelNote(sql,"证型","name", value);
        }
        static public DataTable GetZX()
        {
            string sql = "select name from 证型";
            return GetNote(sql);
        }
        static public void isZXExist(string ID)
        {
            string sql = "select name from 证型 where name='" + ID + "'";
            if (GetNote(sql).Rows.Count > 0)
                return;
            else
            {
                string sql2 = "insert into 证型(name) values('" + ID + "')";
                if (!AddNote(sql2))
                    MessageBox.Show("添加失败!");
            }
        }
        /*
        方法：添加病人信息
        形参：string类型值-病人信息
        返回值：无
        */
        static public void AddPatient(string info)
        {
            string sql = "INSERT INTO 患者信息(时间,姓名,身份证号,性别,年龄,职业,身高,体重,联系电话,家庭地址)VALUES ('" + info + "')";
            if (!AddNote(sql))
                MessageBox.Show("添加失败!");
        }

        /*
        方法：添加治疗单信息
        形参：string类型值-治疗单信息
        返回值：无
        */
        static public void AddCute(string info)
        {
            string sql = "INSERT INTO 治疗单信息(治疗单号,身份证号,病名,证型,病情记录,穴位组一,穴位组二,穴位组三,穴位组四)VALUES ('" + info + "')";
            if (!AddNote(sql))
                MessageBox.Show("添加失败!");
        }

        /*
        方法：添加处方单信息
        形参：string类型值-处方单信息
        返回值：无
        */
        static public void AddTip(string info)
        {
            string sql = "INSERT INTO 处方单信息(治疗单号,治疗日期)VALUES ('" + info + "')";
            if (!AddNote(sql))
                MessageBox.Show("添加失败!");
        }
        static public void UpdateTip(string[,] info)
        {
            string sql = "Update 处方单信息 set ";
            for(int i=1;i<18;i++)
                sql += info[i, 0] + "='" + info[i, 1] + "',";
            sql = sql.Remove(sql.LastIndexOf(","), 1);
            sql += " where 治疗单号='" + info[0, 1] + "'";
            if (UseAccessDb.UpdateNote(sql))
                MessageBox.Show("读取成功！");
            else
                MessageBox.Show("读取失败！");
        }
    }
}
